#include "shm.hpp"

int main() {
    // 步骤1：创建共享内存（CREATER身份）
    Shm shm(pathname, projid, CREATER);
    shm.Attr();

    // 步骤2：获取共享内存地址，强转为自定义结构
    ShmData *mem = (ShmData*)shm.VirtualAddr();

    // 步骤3：循环等待数据（通过标志位同步，替代管道Wait）
    while (true) {
        // 阻塞等待：直到标志位为1（数据就绪）或2（退出）
        while (mem->ready == 0) {
            usleep(100000);  // 休眠100ms，减少CPU占用（避免空轮询）
        }

        // 处理数据
        if (mem->ready == 1) {
            printf("Client say: %s\n", mem->buf);  // 一句一句打印
            mem->ready = 0;  // 标记为“已读取”，允许Client写新数据
        } else if (mem->ready == 2) {
            break;  // 收到退出信号，退出循环
        }
    }

    std::cout << "server end normal!\n";
    return 0;
}